1. Field of the Invention
The present invention is generally related to distributed computer systems (or multiprocessor computer systems), more particularly, to initialization of range registers used for resource routing within distributed computer systems.
2. Description of the Related Art
Recent computer systems, such as blade server systems, often adopt distributed processor architecture. Such computer systems are typically composed of a plurality of motherboards, referred to as cells, each including a processor, a memory and a controller chipset. The cells are connected over system buses to achieve scale-out computing. The distributed processor architecture has an advantage of improved performance and flexibility, and this promotes the use of distributed processor architecture.
Computer systems adopting distributed processor architecture often include one or more spare cells. In such a distributed computer systems, some cells are activated to function as an “online” system, and the remainders are deactivated as spare cells. When requested, one or more spare cells are brought online and incorporated into the online system to increase the performance of the system.
Multicell-based computer systems often achieve resource routing for PCI (Peripheral Component Interconnection) resources on the basis of range registers within controller chipsets. Range registers are used for storing information on assignment of resource ranges to the respective cells; range registers contains locations of resource ranges allocated to the respective cells within the resource space. For example, PCI memory range registers are used for storing locations of PCI memory ranges allocated to the respective cells within the PCI memory space. Correspondingly, PCI I/O range registers are used for storing locations of PCI I/O ranges allocated to the respective cells within the PCI I/O space.
The resource routing is typically achieved as follows. When a CPU issues an access request for a specific resource range, the chipset associated with the requesting CPU determines the owner of the specific resource range (that is, the cell to which the destined resource range is allocated), on the basis of the locations stored in the range registers, and forwards the access request to the owner cell. Forwarding the access request is achieved through broadcasting the access request on the system bus. Each cell receives the access request and determines whether the each cell is the owner of the resource range for which the access request is destined. The owner cell then routes the access request to the I/O controller associated therewith to achieve the access to the destined resource range.
Range registers are needed to be initialized when the computer system is booted. Initialization of the range registers is performed by a BIOS (basic input output system) within the online system. The BIOS sets initial values indicative of locations of PCI resource ranges into the respective range registers to thereby initialize the range registers. In order to simplify the initialization procedure of the range registers, the cells are often configured with the same initial values within the range registers.
For a computer system including a spare cell, initialization of range registers may be achieved through any of the following two methods.
The first initialization method involves determining cell configuration of the online system, and initializing range registers only within the online cells; the BIOS within the online system does not initialize range registers within offline cells. This initialization method experiences a problem that the BIOS is required to perform a complicated procedure to determine the cell configuration each time the range registers are initialized.
The second initialization method involves allowing the BIOS within the online system to set initial values in the range registers within the respective chipsets within all the cells, including spare cells that are not incorporated into the online system. The second initialization method is allowed when the chipsets within the cells are designed to support the PCI configuration access mechanism, which is standardized by the PCI specifications; the PCI configuration access mechanism allows the chipset on the spare cell to abort the write access into the range register therein, when the spare cell is not incorporated into the online system. It should be noted that the PCI configuration access mechanism does not allow the chipset to affect the initialization of other chipsets. The second initialization method has an advantage over the first initialization method in terms of simplification of the initialization procedure.
The second initialization method is advantageous if the cells are configured with the same initial values in the range registers within the chipsets thereof. Configuring the different cells with different initial values in the range registers requires determination of the initial values on the cell configuration of the system, and this reduces the advantage of the second initialization method, which eliminates the need for determining cell configuration.
In order to achieve dynamic activation of the spare cell, the initialization of the range registers within the spare cell is desirably performed in an online fashion, that is, without rebooting the operation system operated on the online system; however the aforementioned initialization methods are not suitable for initialization of the range registers within the spare cell in an online fashion because of the following reason. According to the PCI specifications, the access to the offline cell is discarded, and the initialization of the spare cell is therefore allowed only after the spare cell is brought online. However, this may lead to an unsuccessful resource routing because an access request may be issued before the range registers within the spare cell are appropriately initialized.
As far as the inventor's knowledge, no prior art is known which achieves initialization of range registers within the spare cell without rebooting the operating system operated on the online system. Japanese Open Laid Patent Application No. Jp-A 2002-312297 discloses a method of initializing PCI host bus bridge systems. Japanese Open Laid Patent Application No. Jp-A Heisei 8-147111 discloses a method of installing expanded disk devices for disk array apparatuses. Japanese Open Laid Patent Application No. Jp-A Showa 63-182768 discloses a method for determining implemented booting procedures. Japanese Open Laid Patent Application No. Jp-A Heisei 10-333890 discloses a system and method for generating system resident volumes for network systems composed of host terminals. However, none of these documents describes initialization of range registers within chipsets for distributed computer system.